﻿using System.ServiceModel;
using CC.Yacht.Messages;

namespace CC.Yacht.Interfaces
{
    public interface IYachtServiceCallback
    {
        [OperationContract(IsOneWay = true)]
        void GameMessageReceived(User user, string message);

        [OperationContract(IsOneWay = true)]
        void GameRolled(Dice dice);

        [OperationContract(IsOneWay = true)]
        void GameStateChanged(GameState gameState);

        [OperationContract(IsOneWay = true)]
        void GameOver(User winner);

        [OperationContract(IsOneWay = true)]
        void JoinedGame(JoinGameResponse response);

        [OperationContract(IsOneWay = true)]
        void JoinedLobby(JoinLobbyResponse response);

        [OperationContract(IsOneWay = true)]
        void LobbyGameAdded(Game game);

        [OperationContract(IsOneWay = true)]
        void LobbyGameChanged(Game game);

        [OperationContract(IsOneWay = true)]
        void LobbyGameRemoved(Game game);

        [OperationContract(IsOneWay = true)]
        void LobbyMessageReceived(User user, string message);

        [OperationContract(IsOneWay = true)]
        void LobbyUserJoined(User user);

        [OperationContract(IsOneWay = true)]
        void LobbyUserLeft(User user);
    }
}
